/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package login;

import java.io.IOException;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.faces.context.ExternalContext;
import javax.faces.context.FacesContext;
import javax.faces.event.PhaseEvent;
import javax.faces.event.PhaseId;
import javax.faces.event.PhaseListener;
import javax.servlet.http.HttpSession;

/**
 *
 * @author sestari
 */
public class BeanSessionCycle implements PhaseListener {

    @Override
    public void afterPhase(PhaseEvent event) {
        //
    }

    @Override
    /*
     * Se la sessione e' ativa e sei entrato nuovamente
     * nella pagina di login, questa funzione ti porta diretamente alla pagine del (paziente,medico,usl)
     */
    public void beforePhase(PhaseEvent event) {


        FacesContext context = event.getFacesContext();
        ExternalContext ext = context.getExternalContext();
        HttpSession session = (HttpSession) ext.getSession(false);
        String ee = ((javax.servlet.http.HttpServletRequest)ext.getRequest()).getRequestURI();
 
        
        //se sei nella pagina di login e esiste una sessione
        if (ee.equalsIgnoreCase("/xpto/") && (session != null)) {
            BeanUser user = ((BeanUser) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("user"));
            String comand = "";
            switch (user.getTipo_persona()) {
                case PAZIENTE: {
                    comand = "/xpto/faces/paziente/paziente.jsp";
                    break;
                }
                case MEDICO: {
                    comand = "/xpto/faces/medico/medico.jsp";
                    break;
                }
                case OPERATORE_USL: {
                    comand = "/xpto/faces/usl/usl.jsp";
                    break;
                }           

            }

            try {
                if (!comand.equalsIgnoreCase("")){
                ext.redirect(comand);
                }
            } catch (IOException ex) {
                Logger.getLogger(BeanSessionCycle.class.getName()).log(Level.SEVERE, null, ex);
            }

        }
    }

@Override
        public PhaseId getPhaseId() {
        return PhaseId.RESTORE_VIEW;
    }
}